package com.paradogs.framework.core.annoations;

import com.paradogs.framework.core.annoations.request.PRRequestInterfaceSelector;
import com.paradogs.framework.core.annoations.rpc.PRRPCProxyBeanImportSelector;
import com.paradogs.framework.core.annoations.tick.PRTickSelector;
import com.paradogs.framework.core.config.*;
import com.paradogs.framework.core.netty.clients.common.PRClientLaunch;
import com.paradogs.framework.core.netty.server.PRServerLaunch;
import com.paradogs.framework.core.netty.server.ServerProperties;
import org.springframework.context.annotation.Import;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author: yumi
 * @date: 2023/8/14  9:45
 * @Description: TODO
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Import({
        // 等同于使用 META-INF.spring，看 @Import 注释，主要区别在于 @Import 可以手动注册，META-INF 为导入依赖自动注册
        PRRPCProxyBeanImportSelector.class,
        PRRequestInterfaceSelector.class,
        PRTickSelector.class,
        PRServerLaunch.class, // 启动服务器
        PRClientLaunch.class, // 连接 master 服务器
        ServerProperties.class,
        NettyConfiguration.class,
        QueueConfiguration.class,
        RPCConfiguration.class,
        MybatisPlusConfiguration.class,
        DataConfiguration.class
})
public @interface EnableParadogs {

//    /**
//     * 扫描包
//     * @return
//     */
//    String[] scanPackages();
}
